![]() |
Sommaire de cette page : |
|
Quelques rappels, pour planter le décor...
Dans la langue anglaise, les Macintosh sont désignés, tout comme les compatibles PC, comme étant des "Personnal Computers" (on a d'ailleurs ici le sens premier de "PC", qui désigne maintenant par extension abusive mais commode les compatibles IBM). Le terme "Computer" n'est pas anodin. Tous nos ordinateurs reposent en effet sur un concept du mathématicien John von Neumann, en l'occurrence le concept de "machine séquentielle à programme enregistré", dont le principe est le suivant : Toute "l'intelligence", si l'on peut dire, de l'ordinateur réside dans ce qu'on appelle les programmes. Pour des raisons de commodité, les programmes sont conçus et écrits le plus souvent dans un langage compréhensible par des humains (enfin par les programmateurs...), par exemple le Pascal, le C, C++, objective C, le Fortran... Ces programmes sont ensuite compilés dans le langage machine (l'assembleur, qui est une suite d'instructions directement exécutables par le processeur). Les ordinateurs ne font donc qu'exécuter "bêtement" et de manière séquentielle (les unes après les autres dans un ordre défini) les instructions qui sont contenues dans le programme. Comme ces instructions sont des opérations logiques (addition, soustraction etc.), le terme de "computer" est tout-à-fait approprié puisque "computer" se traduit tout simplement par "calculateur". Remarque : chaque type de processeur possède son jeu d'instructions. Par exemple les processeurs Motorola 68k utilisent un jeu d'instructions complexes (ce sont des processeurs CISC) différent du jeu d'instructions des processeurs PowerPC (qui utilisent un jeu d'instructions réduit, RISC), dont diffère encore le jeu d'instructions des processeurs x86 Intel/AMD des PC. Un programme compilé pour un de ces processeurs ne sera donc pas exécutable par un autre processeur, à moins d'être émulé (ce qui est par exemple le cas des programmes 68k tournant sur PPC). Quel est le rôle de la Ram dans tout ça ? Oui, je suis inquiet à son sujet... ;-) Et bien tout simplement tout processeur a absolument besoin pour exécuter des programmes, d'un espace de stockage temporaire, d'une "mémoire" dans laquelle il peut stocker les instructions qu'il doit exécuter. Le processeur a aussi besoin de cet espace pour stocker les données qu'il a à traiter et/ou les résultats temporaires ou définitifs des calculs. En effet les données et instructions que le processeur doit traiter sont souvent issues des périphériques (cartes d'acquisition, périphériques de pointage ou claviers), ou de ce qu'on appelle les mémoires mortes (ROM), ou encore des espaces de stockage de masse comme les disques durs, qui sont soit lents d'accès soit dont les données sont éphémères (cartes d'acquisition, clavier, souris) et doivent être stockées quelque part. C'est la Ram (Random Access Memory) qui va jouer ce rôle d'espace de stockage. Les données à stocker en Ram, que ce soient donc des données à traiter ou des instructions à exécuter, sont de nature binaire. Ces données sont donc des successions d'états logiques 0 ou 1, matérialisés à cause de la nature électronique des processeurs sous forme de tensions comme 0V ou 5V, accessibles rapidement par le processeur. La Ram sera donc pour le processeur l'espace idéal pour stocker les données et les instructions, parce que celles-ci peuvent alors être accédées rapidement, manipulées à satiété et stockées tant que du courant est fourni, alors qu'au départ ces données sont éphémères (cartes d'acquisition, clavier, souris...), ineffaçables (ROM, Read Only Memory) ou alors ne peuvent pas être accédées suffisamment rapidement pendant les calculs (disques durs). Deux exemples illustrant le rôle de la Ram :
|
![]() |
Comme on a vu, les donnés contenues dans cet espace de stockage doivent donc pouvoir être lues ou écrites très rapidement, ce qui n'est possible avec les technologies actuelles qu'avec les composants électroniques appelés "DRAM", "SRAM" ou "SDRAM" selon les cas (dans les premiers ordinateurs on utilisait des tores en ferrite...). Ces composants ont tous en commun d'être constitués de points mémoire (les "bits*") organisés en matrices, ou tableaux si vous préférez. La désignation RAM, pour "Random Access Memory" vient de là : en effet le temps d'accès à n'importe lequel de ces points mémoire constitués en matrice est toujours le même, donc on peut accéder de manière aléatoire (random) aux données. On utilise rarement l'unité du bit, on préfère les regrouper par 8 (on parle alors d'Octets. ![]() |
![]() Avertissement: cette section est un peu plus technique, si cela vous effraie sautez directement à la section DRAM |
![]() |
La RAM est donc toujours constituée d'une quantité plus ou moins grande de points mémoire, appelés "bits", qui mémorisent un état logique 1 (+5V ou + 3,3V) ou 0 (0V). Ces points sont toujours organisés sous forme de matrice. Le schéma ci-dessous représente une mémoire de 64 bits (8 octets) de type DRAM organisée en matrice de 8x8=64 bits : | |
Comme on peut voir, la matrice comporte 8 colonnes et 8 rangées. Il y a donc 8 adresses de colonnes (colonne 1, colonne 2, etc.) et 8 adresses de rangées (rangée 1, rangée 2, etc.), soit au total 64 points mémoire (point 1:1, point 1:2 etc. jusqu'à point 8:8). Ces 64 adresses sont codées et décodées en 6 bits (2 6=64) par les circuits d'adressage colonne et adressage rangées. Les données sont lues et écrites dans les points mémoire grâce au circuit d'entrée/sortie, qui "lit" la tension du point mémoire et l'envoie dans le bus de données lors des opérations d'écriture, ou qui "lit" l'état du bus de données et l'écrit dans le point mémoire lors des opérations d'écriture mémoire. |
![]() |
||
Le circuit d'entrées/sorties est commandé par le bus de commande, qui donne soit l'instruction de lire, soit celle d'écrire en mémoire. Une remarque : ici les points mémoires sont constitués d'un seul "bit" à la fois (donc le bus de données est large d'un seul "bit"). On désigne donc cette mémoire comme étant une mémoire 64 x 1 (64 points mémoire de 1 bit de large chacun). |
|||
![]() |
Comme la matrice repésentée ici est du type "DRAM", les points mémoire sont constitués d'un transistor (de type MOS) et d'un condensateur. Quand la rangée du transistor est activée, le transistor établit un contact (comme si on fermait un interrupteur) entre le condensateur et la colonne correpondante. On peut alors soit "lire" la tension du condensateur sur la colonne, soit y "écrire" la valeur logique en forçant la tension aux bornes du condensateur à +5V ou à 0V. Le condensateur se décharge obligatoirement au bout d'un moment à cause de fuites du courant électrique. C'est pourquoi le cycle de fonctionnement de la mémoire inclut un cycle de "rafraîchissement" des données, qui consiste à lire puis réécrire simultanément l'état logique de tous les points mémoire d'une rangée. |
||
Ici pour rafraîchir la mémoire il faut donc 64 cycles de rafraîchissement, un par rangée de points mémoire. |
Sur une puce mémoire de 16 Mbits (soit 2 Mo) organisée en 4096 colonnes et 4096 rangées (4096x4096=16 777 216 bits, donc bien 16 Mbits), il faut activer séparément les 4096 rangées une à une pour rafraîchir toute la puce.
On parle alors de puce "4k refresh", puisqu'il faut 4096 cycles pour rafrîchir les données de la RAM (toutes les puces d'une barrette étant rafraîchies en parallèle).
Une remarque : certains Macintosh exigent des puces "2k refresh" car elles sont plus rapides, tandis que d'autres ne supportent que les "4k refresh" à cause de leur contrôleur mémoire.
En effet, à la différence de la mémoire cache qui est directement contrôlée par le processeur, via un bus d'adresses et de données spécifiques, la mémoire vive partage très souvent le bus de données de la carte mère et est adressée par le contrôleur mémoire.
Le contrôleur mémoire s'occuppe donc de gérer la mémoire : il assure l'identification et le test des barrettes de mémoire au démarrage, et gère la synchronisation éventuelle de l'horloge mémoire avec l'horloge du processeur. Il permet aussi les accès direct à la mémoire à certains périqphériques (DMA).
Le contrôleur mémoire peut être "supervisé" par un MMU ou pas.
Le MMU (Memory Managment Unit) est un circuit adossé ou intégré au processeur qui s'occuppe d'insérer l'espace mémoire adressable réel des barettes de Ram dans l'espace adressable virtuel du processeur, et qui permet de gérer la "mémoire paginnée" ou mémoire virtuelle : la pagination permet de profiter d'un plus grand espace virtuel de mémoire système. Les "Pages" de mémoire qui n'ont pas étéutilisées récemment sont stockées sur le disque dur.
Malheureusement, lors de la traduction de MacOS 8.5 et suivants, l'application "Informations Système Apple" a été localisée de telle manière que lorsqu'elle détecte des barettes fonctionnant en CAS 3, elles sont signalées comme étant plus lentes :
Tous les dessins de personnages de cette page sont reproduits à partir de la bande dessinée "Le Génie des Alpages" de F'Murr.
Revenir à l'accueil - revenir en haut de la page - page suivante